﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace AlgorithmTest
{
    // T_[四个数字排序]_[算法名]
    public class T_0212_CheckPermutation : IAlgorithm
    {
        // 面试题 01.02. 判定是否互为字符重排

        /*
        给定两个字符串 s1 和 s2，请编写一个程序，确定其中一个字符串的字符重新排列后，能否变成另一个字符串。

        说明：
            0 <= len(s1) <= 100
            0 <= len(s2) <= 100
        */

        public void Test()
        {
            // 算法参数定义

            // 算法执行与打印
        }

        // 算法
        public bool CheckPermutation(string s1, string s2)
        {
            if (s1.Length != s2.Length) return false;

            var map = new Dictionary<char, int>();
            foreach (var c in s1)
            {
                if (!map.TryAdd(c, 1))
                    map[c]++;
            }
            foreach (var c in s2)
            {
                if (map.ContainsKey(c)) map[c]--;
                else return false;
                if (map[c] <= 0) map.Remove(c);
            }
            return true;
        }
    }
}
